#ifndef studio_UTILS_studio_GEO_COLL_H
#define studio_UTILS_studio_GEO_COLL_H

#include <geometry/studio_geo.h>
#include <geometry/studio_geo_prop.h>

class studio_geo_coll
{
public:
    studio_geo_coll() = default;

    studio_geo_coll(studio_point p);

    studio_geo_coll(studio_multi_point mp);

    studio_geo_coll(studio_line l);

    studio_geo_coll(studio_multi_line ml);

    studio_geo_coll(studio_poly p);

    studio_geo_coll(studio_multi_poly mp);


    void add(studio_point p);

    void add(studio_multi_point mp);

    void add(studio_line l);

    void add(studio_multi_line ml);

    void add(studio_poly p);

    void add(studio_multi_poly mp);

public:
    // 类型
    enum_geometry_type m_type{enum_geometry_type::egtInvalid};
    // 内容
    studio_point m_point; // 单点
    studio_multi_point m_points; // 多点
    studio_line m_line; // 单线
    studio_multi_line m_lines; // 多线
    studio_poly m_poly; // 单面(内环+外环)
    studio_multi_poly m_polys; // 多面(多个 单面)
    std::vector<enum_geometry_type> comp_type; // 用于存储复合数据类型变量中的类型变量
    // 属性列表
    std::map<std::string, studio_geo_prop> m_props;
};

#endif  // studio_UTILS_studio_GEO_COLL_H
